$(function () {
    /* treeview -> 全选按钮 */
    $("input[name=select-all]").click(function(){
        if($(this).is(':checked')==true){
            $("input[name=checkbox]").prop("checked", true);
        }else{
            $("input[name=checkbox]").prop("checked", false);
        }
    });

    $("input[name=spzt]").click(function(){
        if($(this).prop("checked")){
            $("input[name=spzt]").prop("checked", false);
            $(this).prop("checked", true);
        }
    });

    /* treeview -> 点击checkbox所在th时，阻止冒泡 */
    $(".checkbox-cell").click(function(){
        event.stopPropagation();
    });

    /* treeview -> 点击checkbox时，阻止冒泡 */
    $("input[name=checkbox]").click(function(event){
        event.stopPropagation();
    });

    /* treeview -> 点击信息行，进入某一行的formview页面 */
    $(".tbody-line").click(function(){
        var context = fn_GetContext();
        context.id = $(this).attr("data-id"); //重新设置id的值
        context.field = $("select[name=field]").val();
        context.offset = $(this).attr("offset");
        var url = "?";
        for(var k in context){
            url += k + "=" + context[k] + "&";
        }
        var self = location.href;
        if(self.indexOf("familyLzf")==-1){
            location.href = '/admin/lzf/detail' + url;
        }else{
            location.href = '/admin/familyLzf/detail' + url;
        }
    });

    /* treeview -> 表头字段进行排序 */
    $(".list-header").click(function(){
        var field = $(this).attr("field");
        var sort = $(this).attr("sort");
        sort = (sort=="asc"?"desc":"asc");
        $("input[name=order_field]").val(field);
        $("input[name=order_sort]").val(sort);
        $(".search-form").submit();
    });

    /* formview */
    $(".ui-tabs li").click(function () {
        $(".ui-tabs li").removeClass("selected");
        $(this).addClass("selected");
        $(".tabs-item").hide();
        var target = $(this).attr("target");
        $("."+target).show();
    });

    $("select[name=opinion]").change(function(){
        $("textarea[name="+$(this).attr("target")+"]").val($(this).val());
        $(this).val("");
    });
});

/**********************  listview  *******************************/
/**
 * listview -> 上一页、下一页
 * @param page
 * @constructor
 */
function PageJump(page){
    $("input[name=page]").val(page);
    $(".search-form").submit();
}

/**
 * listview -> 删除信息
 */
function action_del(){
    var dataIds = new Array();
    $("input[name=checkbox]").each(function(){ //由于复选框一般选中的是多个,所以可以循环输出
        if($(this).is(":checked")){
            dataIds.push( parseInt($(this).attr("data-id")));
        }
    });
    if(dataIds.length==0){
        alert("请选择要删除的对象");
        return false;
    }
    $.ajax({
        url:"/admin/lzf/ajax_del",
        data: {info:dataIds}, type:"POST", dataType:"JSON",
        success: function(data){
            if(data.status){
                location.reload();
                fn_delRows(dataIds);
            }else{
                alert(data.info);
            }
        }
    });
}

/**
 * 辅助函数，listview，删除信息行
 * @param dataIds
 */
function fn_delRows(dataIds){
    for(var i=0; i<dataIds.length; i++){
        $("div[class='tbody-line'][data-id='144']").remove();
    }
}

/**
 * 通过字段，字段值，及值域来生成select
 * @param field
 * @param value
 * @param options
 * @param emptyOption
 * @returns {string|string|*}
 */
function fn_GenerateSelect(field, value, options, emptyOption) {
    html = '<select name="'+field+'">' + emptyOption;
    for(var j=0; j<options.length; j++){
        if(options[j].name){
            if(value==options[j].name){
                html += '<option selected="selected" value="'+options[j].id+'">'+options[j].name+'</option>';
            }else{
                html += '<option value="'+options[j].id+'">'+options[j].name+'</option>';
            }
        }else{
            if(value==options[j]){
                html += '<option selected="selected" value="'+options[j]+'">'+options[j]+'</option>';
            }else{
                html += '<option value="'+options[j]+'">'+options[j]+'</option>';
            }
        }
    }
    html += '</select>';
    return html;
}

/**********************  formview  *******************************/
/**
 * formview -> 编辑
 */
function action_edit(){
    //切换界面到编辑模式
    fn_SwithMode("EDIT");

    var html, value;
    for(var i=0; i<fields.length; i++){
        value = $("td[field="+fields[i]+"]").html();
        if(fields[i]=="attr"){      //将type=select字段信息替换
            $("div[name=multi-select-attr1]").show();
            $("div[name=multi-select-attr2]").hide();
            continue;
        }else if(fields[i]=="hujiqk"){      //将type=select字段信息替换
            $("div[name=multi-select-hujiqk1]").show();
            $("div[name=multi-select-hujiqk2]").hide();
            continue;
        }else if(fields[i]=="area_id"){      //将type=select字段信息替换
            html = fn_GenerateSelect(fields[i], value, areaOptions);
        }else if(fields[i]=="community_id"){      //将type=select字段信息替换
            html = fn_GenerateSelect(fields[i], value, communityOptions);
        }else if(fields[i]=="marriage"){      //将type=select字段信息替换
            html = fn_GenerateSelect(fields[i], value, marriageOptions);
        }else if(fields[i]=="gender"){      //将type=select字段信息替换
            html = fn_GenerateSelect(fields[i], value, genderOptions);
        }else if(fields[i]=="dibao"){      //将type=select字段信息替换
            html = fn_GenerateSelect(fields[i], value, dibaoOptions);
        }else if(fields[i]=="content"){  //textarea字段需要区别处理
            //将type=textarea字段信息替换
            value = typeof(value)=="undefined"?"":value;
            html = '<textarea name="'+fields[i]+'" placeholder="请输入备注信息">'+value+'</textarea>';
        }else{ //input[type=text]字体统一处理
            html = '<input name="'+fields[i]+'" type="text" value="'+value+'" />';
        }
        $("td[field="+fields[i]+"]").html(html);

    }
}

/**
 * formview -> 保存
 */
function action_save(){
    if(fn_FormSubmitCheck()){
        var data = fn_GetFormValue();
        if(fn_IsFormUpdated(data)==false){ //表单内容没有修改
            fn_UpdateField(data);
            fn_SwithMode("READ"); //切换界面到只读模式
            return true;
        }
        $.ajax({
            url:"/admin/lzf/ajax_UpdateInfoById",
            data: {id: $("input[name=id]").val(), data:data}, type:"POST", dataType:"JSON",
            success: function(result){
                if(result.status){
                    fn_UpdateField(data);
                    fn_UpdateOldField(data);
                    fn_SwithMode("READ"); //切换界面到只读模式
                }else{
                    alert(result.info);
                }
            }
        });
    }
}

/**
 * formview -> 放弃编辑
 */
function action_abort(){
    for(var i=0; i<fields.length; i++){
        var oldValue = fn_GetOldValues(fields[i]);
        fn_SetValues(fields[i], oldValue);
    }
    //显示编辑按钮，隐藏保存按钮
    $(".btn-group-edit").show();
    $(".btn-group-save").hide();
}

/**
 * formview -> 上一条、下一条
 * @param dataId
 * @param offset
 * @constructor
 */
function ItemJump(dataId, offset){
    var context = fn_GetContext();
    context.id = dataId;
    context.offset = offset;
    //当没有数据的时候，则会跳转到listview
    if($("input[name=id]").val()==dataId){
        location.href = '/admin/lzf/index?zt='+context.state;
        return true;
    }
    var url = fn_JsonToUrl(context);
    location.href = '/admin/lzf/detail?' + url;
}

/**
 *  formview -> 复制信息
 */
function action_copy(){
    var copy  = {action:"copy", id:$("input[name=id]").val()};
    var url = fn_JsonToUrl(copy);
    location.href = "/admin/lzf/add?"+url;
}

/**
 * formview -> 删除信息
 */
function action_del2(){
    var id = $("input[name=id]").val();
    var offset = $("input[name=offset]").val();
    var context = fn_GetContext();
    $.ajax({
        url:"/admin/lzf/ajax_del2",
        data: {id:id, offset:offset,state:context.state, value:context.value, field:context.field,
            order_field:context.order_field, order_sort:context.order_sort,where:context.where},
        type:"POST", dataType:"JSON",
        success: function(data){
            if(!data.status){alert(data.info);return false;}
            if(data.info==null){ //数据全部被删除，则跳转到listview
                console.log(context.state);
                location.href = "/admin/lzf/index?zt="+context.state;
            }else{
                //todo 这里还需要将上下文信息以get方法进行传递
                alert("删除成功，页面将自动跳转到下一条记录");
                context.id = data.info;
                var url = fn_JsonToUrl(context);
                location.href = "/admin/lzf/detail?"+url;
            }
        }
    });
}

/**
 *  formview -> 提交添加信息表单
 */
function submitForm(){
    if(fn_FormSubmitCheck()){
        $("#lzfForm").submit();
    }
}

/**
 * formview -> 切换模式（READ/EDIT）
 */
function fn_SwithMode(mode){
    if(mode=="READ"){
        //隐藏编辑按钮，显示保存按钮
        $(".btn-group-edit").show();
        $(".btn-group-save").hide();
    }else if(mode=="EDIT"){
        //隐藏编辑按钮，显示保存按钮
        $(".btn-group-edit").hide();
        $(".btn-group-save").show();
    }
}

/**
 * formview -> 修改成功后，更新前端保存的原字段值
 */
function fn_UpdateField(data){
    for(var i=0; i<fields.length; i++){
        fn_SetValues(fields[i], data[fields[i]]);
    }
}

/**
 * 通过ID来获取option的name
 * @param id
 * @param options
 * @returns {boolean}
 */
function fn_GetOptionNameById(id, options) {
    for(var i=0; i<options.length; i++){
        if(options[i].id==id){
            return options[i].name;
        }
    }
    return null;
}

/**
 * formview -> 修改成功后，更新前端保存的原字段值
 */
function fn_UpdateOldField(data){
    for(var i=0; i<fields.length; i++){
        $("input[name=old_"+fields[i]+"]").val(data[fields[i]]);
    }
}

/**
 * formview -> 表单提交验证
 */
function fn_GetFormValue(){
    var result = {};
    for(var i=0; i<fields.length; i++){
        if(fields[i]=="content"){
            result[fields[i]] = $("textarea[name="+fields[i]+"]").val();
        }else if(fields[i]=="gender" || fields[i]=="dibao" || fields[i]=='marriage' || fields[i]=='community_id' || fields[i]=="area_id"){
            result[fields[i]] = $("select[name="+fields[i]+"]").val();
        }else if(fields[i]=="attr"){
            result[fields[i]] = $('select[name=attr]').multipleSelect("getSelects").toString();
        }else if(fields[i]=="hujiqk"){
            result[fields[i]] = $('select[name=hujiqk]').multipleSelect("getSelects").toString();
        }else{
            result[fields[i]] = $("input[name="+fields[i]+"]").val();
        }
    }
    return result;
}

/**
 * formview -> 表单提交验证
 */
function fn_FormSubmitCheck(){
    if(!$("input[name=name]").val()){
        alert("姓名不能为空");
        return false;
    }
    if(!$("input[name=idno]").val()){
        alert("身份证不能为空");
        return false;
    }
    return true;
}

/**
 * 验证表单内容是否被改动，false没有改动，true改动
 * @param data
 * @returns {boolean}
 */
function fn_IsFormUpdated(data) {
    for(var i=0; i<fields.length; i++){
        var oldValue = fn_GetOldValues(fields[i]);
        if(data[fields[i]] != oldValue){
            return true;
        }
    }
    return false;
}

/**
 * 辅助函数，formview，获取旧数据的值
 * @param field
 * @returns {*|jQuery}
 */
function fn_GetOldValues(field){
    return $("input[name=old_"+field+"]").val();
}

/**
 * 辅助函数，formview，设置字段的值
 * @param field
 * @param value
 */
function fn_SetValues(field, value){
    if(field=="area_id"){
        value = fn_GetOptionNameById(value, areaOptions);
    }else if(field=="community_id"){
        value = fn_GetOptionNameById(value, communityOptions);
    }
    if(field=='attr'){
        $("div[name=multi-select-attr2]").html(value).show();
        $("div[name=multi-select-attr1]").hide();
    }else if(field=='hujiqk'){
        $("div[name=multi-select-hujiqk2]").html(value).show();
        $("div[name=multi-select-hujiqk1]").hide();
    }else{
        $("td[field="+field+"]").html(value);
    }
}

/**
 * 辅助方法，formview，将json格式化成url参数
 * @param json
 * @returns {string}
 */
function fn_JsonToUrl(json){
    var url = "";
    for(var k in json){
        url += (k + "=" + json[k] + "&");
    }
    return url;
}

/**
 * 辅助函数，formview，获取上下文信息
 * @returns {{id: (*|jQuery), field: (*|jQuery), value: (*|jQuery), page: (*|jQuery), order_field: (*|jQuery), order_sort: (*|jQuery), offset: (*|jQuery)}}
 */
function fn_GetContext(){
    return {
        id : $("input[name=id]").val(),
        where : $("input[name=where]").val(),
        field : $("input[name=field]").val(),
        value : $("input[name=value]").val(),
        state : $("input[name=state]").val(),
        page : $("input[name=page]").val(),
        order_field : $("input[name=order_field]").val(),
        order_sort : $("input[name=order_sort]").val(),
        offset : $("input[name=offset]").val(),
    }
}

/**
 * 关闭对话框
 */
function closeDialog() {
    $(".dialog").hide();
}

/* 弹出对话框 */
function showDialog(dlgName) {
    var dataIds = new Array();
    $("input[name=checkbox]").each(function(){ //由于复选框一般选中的是多个,所以可以循环输出
        if($(this).is(":checked")){
            dataIds.push( $(this).attr("data-id") );
        }
    });
    if(dataIds.length==0 && $("input[name=checkbox]").length>0){
        alert("请选择操作对象");
        return false;
    }
    dlgName = dlgName?dlgName:'dialog';
    $("."+dlgName).show();
}

function action_export(type) {

    var dataIds = new Array();
    $(".checkbox").each(function(){ //由于复选框一般选中的是多个,所以可以循环输出
        if($(this).is(":checked")){
            dataIds.push( parseInt($(this).attr("data-id")));
        }
    });

    var context = fn_GetContext();
    context.ids = dataIds.join();
    context.field = $("select[name=field]").val();

    var url = "&";
    for(var k in context){
        url += k + "=" + context[k] + "&";
    }
    location.href = '/admin/lzf/export?type=' + type + url;
}

